iT邦幫忙

DAY 19
5

看範例學C#系列 第 19

看範例學C#-19 自製簡易IE瀏覽器

  • 分享至 

  • xImage
  •  

簡易IE瀏覽器範例
今天的範例是做一個簡易IE瀏覽器,用了畫面上一個Webbroser(用來顯示網頁畫面),六個button(按鈕),一個textbox,一個label,底下用了一個ToolTip 用來顯示狀態列,底下左下角那個棒狀物是ProgessBar

下面程式碼是webBrowser1用到的事件,目得是避免網頁會自動開新分頁,這樣會變得由ie開啟,所以我們一般都要把這種自動開新分頁
給擋下來,轉由我們程式內的webBrowser1去顯示

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
foreach (HtmlElement archor in this.webBrowser1.Document.Links)
{
archor.SetAttribute("target", "_self");
}
if (webBrowser1.ReadyState == WebBrowserReadyState.Complete)
{ // 把目前的網址顯示在網址輸入框中
textBox1.Text = webBrowser1.Url.ToString();
}
}
private void webBrowser1_NewWindow(object sender, System.ComponentModel.CancelEventArgs e)
{
e.Cancel = true;
}

以下為完整原始碼

using System;
using System.Windows.Forms;
namespace ex06
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            // 預設載入的頁面
            webBrowser1.Navigate("http://tw.yahoo.com");
        }
        private void backBtn_Click(object sender, EventArgs e)
        {
            // 上一頁
            webBrowser1.GoBack();
        }
        private void forwardBtn_Click(object sender, EventArgs e)
        {
            // 下一頁
            webBrowser1.GoForward();
        }
        private void refreshBtn_Click(object sender, EventArgs e)
        {
            // 重新整理
            webBrowser1.Refresh();
        }
        private void stopBtn_Click(object sender, EventArgs e)
        {
            // 停止
            webBrowser1.Stop();
        }
        private void homeBtn_Click(object sender, EventArgs e)
        {
            // 首頁
            webBrowser1.GoHome();
        }
        private void goBtn_Click(object sender, EventArgs e)
        {
            // 前往網址輸入框中的網址 
            textBox1.Text = textBox1.Text.Trim();
            bool chkdisk = false;//防止進入磁碟機
                if (textBox1.Text.Length >= 0)
                {
                    if (textBox1.Text.Length >= 4 && textBox1.Text.ToString().Substring(0, 4).ToUpper() == "FILE")
                    {
                        textBox1.Text = "";
                        chkdisk = true;
                    }
                    for (int i = 0; i < 26; i++)
                    {
                        if (textBox1.Text.Length >= 2 && textBox1.Text.ToString().Substring(0, 2).ToUpper() == Convert.ToChar(65 + i).ToString() + ":")
                        {
                            textBox1.Text = "";
                            chkdisk = true;
                            break;
                        }                        
                    }
                if (!chkdisk)
                    webBrowser1.Navigate(textBox1.Text);
                }
            }
        }
        private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            foreach (HtmlElement archor in this.webBrowser1.Document.Links)
            {
                archor.SetAttribute("target", "_self");
            }
            if (webBrowser1.ReadyState == WebBrowserReadyState.Complete)
            {       // 把目前的網址顯示在網址輸入框中
                textBox1.Text = webBrowser1.Url.ToString();
            }
        }
        private void webBrowser1_NewWindow(object sender, System.ComponentModel.CancelEventArgs e)
        {
            e.Cancel = true;
        }
        private void webBrowser1_ProgressChanged(object sender, WebBrowserProgressChangedEventArgs e)
        {
            toolStripProgressBar1.Maximum = Convert.ToInt32(e.MaximumProgress);
            toolStripProgressBar1.Value = Convert.ToInt32(e.CurrentProgress);
            toolStripLabel1.Text = webBrowser1.StatusText;
        }
    }
}


全系列文章列表


上一篇
看範例學C#-18 Regular Expression 規則運算式
下一篇
看範例學C#-20 兩個執行檔間數值的傳遞與接收
系列文
看範例學C#30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 則留言

0
chiounan
iT邦研究生 1 級 ‧ 2011-10-17 10:06:57

疑惑如果把電腦中的IE移除掉,還能這麼做嗎?
會不會這樣就缺少了可以支援IE的元件。

thc iT邦研究生 5 級 ‧ 2011-10-17 15:23:40 檢舉

我也沒試過,有的網站只能用ie瀏覽,所以我不會去移除它

0
lovep229
iT邦新手 4 級 ‧ 2011-10-17 21:24:31

您好,想請教一下為什麼要連用兩次if (textBox1.Text.Length >= 0) 來判斷?

thc iT邦研究生 5 級 ‧ 2011-10-17 23:14:52 檢舉

多寫了,已更正汗

lovep229 iT邦新手 4 級 ‧ 2011-10-17 23:34:02 檢舉

呵呵~我還想說有什麼特別用意,但看不出來XD~謝謝你的程式碼!讓我學到不少^^

我要留言

立即登入留言